/* CRENCAS INICIAIS - BELIEFS*/

largura(2427). 
altura(1500). 
minhaBase(200,800). //?? considerar também se joga de ataque ou defesa

//infos que serão atualizadas por percepções
posRefem(2300,750).
posPris(10,750). 
myPos(200,800).
pertoRefem(2).
pertoPris(4).
estrategia(neutro). 
salvou(false).


/* PLANOS E INTENCOES: */

//objetivo inicial
!main.

+!main: true <-
	mover(400,600);
	!execEstrategia.
	
//atualização de crenças	
	
+atualizaEscalaRef (Z): true <-
	-+pertoRefem (Z).
	
+atualizaEscalaPos (Z): true <-
	-+pertoPris (Z).

+ataque : true <-    
    -+estrategia(ataque);         
	!execEstrategia.
	
+defesa : true <-
	-+estrategia(defenda);    	
	!execEstrategia.	
	
+neutro : true <-
	-+estrategia(neutro);   	
	!execEstrategia.

+atualizaRefem (X, Y): true <-
	-+posRefem (X, Y).
		
+atualizaPris (X, Y): true <-
	-+posPris (X, Y).
	
+mover(X,Y) : true <-	
	-+myPos(X,Y).

+buscar(X,Y) : true <-	
	-+myPos(X,Y).
	
	
	
+salvou : true <-
	-+salvou(true);
	recuar;
	!recuar.
	
+recuar: true <-
	!gotoBase(X,Y);
	!execEstrategia.
  
+gotoBase(X,Y) : true <-
	?minhaBase(X, Y);
	mover(X, Y);
	!execEstrategia.

//se ataque = true o tratamento é feito conforme a distancia que 3 robos estão do refem e um do prisioneiro
+!execEstrategia : pertoRefem(1) & estrategia(ataque)  <-
    ?posRefem(X,Y);            
	buscar(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoRefem(2) & estrategia(ataque) <-
    ?posRefem(X,Y);            
	mover(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoRefem(3) & estrategia(ataque) <-
    ?posRefem(X,Y);            
	mover(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoRefem(4) & estrategia(ataque) <-
    ?posPris(X,Y);             //este robo vai cubrir a defesa, mesmo em modo ataque  ver estratégia
	mover(X,Y);
	!execEstrategia.
	
//se defesa = true o tratamento é feito conforme a distancia que 3 robos estão do prisioneiro e um do refem
+!execEstrategia : pertoPris(1) & estrategia(defenda) <-
    ?posPris(X,Y);           //consulta posicao do prisioneiro. 
	mover(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoPris(2) & estrategia(defenda) <-
    ?posPris(X,Y);           //consulta posicao do prisioneiro. 
	mover(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoPris(3) & estrategia(defenda) <-
    ?posPris(X,Y);           //consulta posicao do prisioneiro. 
	mover(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoPris(4) & estrategia(defenda) <-
    ?posRefem(X,Y);           //este robo vai cubrir o ataque , mesmo em modo defesa ver estratégia
	mover(X,Y);
	!execEstrategia.
	
//se neutro = true o tratamento é feito conforme a distancia que 2 robos estão do prisioneiro e 2 do refem
+!execEstrategia : pertoRefem(1) & estrategia(neutro) <-
    ?posRefem(X,Y);           //consulta posicao do refem. 
	buscar(X,Y);
	!execEstrategia.	
	
+!execEstrategia : pertoRefem(2) & estrategia(neutro) <-
    ?posRefem(X,Y);           //consulta posicao do refem. 
	buscar(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoRefem(3) & estrategia(neutro) <-
    ?posPris(X,Y);           //consulta posicao do prisioneiro. 
	mover(X,Y);
	!execEstrategia.
	
+!execEstrategia : pertoRefem(4) & estrategia(neutro) <-
    ?posPris(X,Y);           //consulta posicao do prisioneiro. 
	mover(X,Y);
	!execEstrategia.